Disable arm-specific codepaths
authorDebian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
Thu, 24 Apr 2025 19:36:28 +0000 (19:36 +0000)
committerPeter Michael Green <plugwash@raspbian.org>
Thu, 24 Apr 2025 19:36:28 +0000 (19:36 +0000)
they cause the resulting code to come out with armv7 markers, which is
a problem given the way rust applications are statically linked.
 Changes in src and tests were made with the commands

 for file in `find src -name '*.rs'` ; do sed -i 's/target_arch = "arm"/target_arch = "armxxx"/g' $file ; done
 for file in `find tests -name '*.rs'` ; do sed -i 's/target_arch = "arm"/target_arch = "armxxx"/g' $file ; done

 Other changes were made manually.

Author: Peter Michael Green <plugwash@raspbian.org>

Gbp-Pq: Name disable-arm-specific-codepaths.patch

27 files changed:
Cargo.lock
build.rs
include/ring-core/target.h
src/aead/aes.rs
src/aead/aes/bs.rs
src/aead/aes/ffi.rs
src/aead/aes/vp.rs
src/aead/aes_gcm.rs
src/aead/chacha.rs
src/aead/gcm/ffi.rs
src/aead/gcm/neon.rs
src/aead/overlapping/base.rs
src/aead/poly1305.rs
src/aead/poly1305/ffi_arm_neon.rs
src/arithmetic/montgomery.rs
src/cpu.rs
src/cpu/arm.rs
src/cpu/arm/linux.rs
src/digest/sha2/fallback.rs
src/digest/sha2/mod.rs
src/digest/sha2/sha2_32.rs
src/digest/sha2/sha2_64.rs
src/ec/curve25519/x25519.rs
src/lib.rs
src/polyfill.rs
src/polyfill/slice/as_chunks.rs
src/prefixed.rs

index 7ca88ee6db7f0e9e04510dd33ea2293e8470c6fe..ac03edf3f3460c474d718a70d95d609fb63e0664 100644 (file)
@@ -2,12 +2,6 @@
 # It is not intended for manual editing.
 version = 3
 
-[[package]]
-name = "bumpalo"
-version = "3.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631"
-
 [[package]]
 name = "cc"
 version = "1.2.13"
@@ -30,20 +24,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if",
- "js-sys",
  "libc",
  "wasi",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "js-sys"
-version = "0.3.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705"
-dependencies = [
- "once_cell",
- "wasm-bindgen",
 ]
 
 [[package]]
@@ -52,46 +34,6 @@ version = "0.2.169"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
 
-[[package]]
-name = "log"
-version = "0.4.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
-
-[[package]]
-name = "minicov"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f27fe9f1cc3c22e1687f9446c2083c4c5fc7f0bcf1c7a86bdbded14985895b4b"
-dependencies = [
- "cc",
- "walkdir",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.20.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.93"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.38"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
-dependencies = [
- "proc-macro2",
-]
-
 [[package]]
 name = "ring"
 version = "0.17.14"
@@ -101,261 +43,22 @@ dependencies = [
  "getrandom",
  "libc",
  "untrusted",
- "wasm-bindgen-test",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
 ]
 
-[[package]]
-name = "scoped-tls"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
-
 [[package]]
 name = "shlex"
 version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
 
-[[package]]
-name = "syn"
-version = "2.0.98"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
-
 [[package]]
 name = "untrusted"
 version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
-[[package]]
-name = "walkdir"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
-dependencies = [
- "same-file",
- "winapi-util",
-]
-
 [[package]]
 name = "wasi"
 version = "0.11.0+wasi-snapshot-preview1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c"
-dependencies = [
- "cfg-if",
- "once_cell",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd"
-dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.47"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d"
-dependencies = [
- "cfg-if",
- "js-sys",
- "once_cell",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49"
-
-[[package]]
-name = "wasm-bindgen-test"
-version = "0.3.47"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d919bb60ebcecb9160afee6c71b43a58a4f0517a2de0054cd050d02cec08201"
-dependencies = [
- "js-sys",
- "minicov",
- "once_cell",
- "scoped-tls",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "wasm-bindgen-test-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-test-macro"
-version = "0.3.47"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "222ebde6ea87fbfa6bdd2e9f1fd8a91d60aee5db68792632176c4e16a74fc7d8"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "web-sys"
-version = "0.3.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "winapi-util"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
-dependencies = [
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.59.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
index fda71637687452156ce4560835ecb7d6e5ab04fc..a6992ad8595eefb2c1f01cc4868453e18a311d51 100644 (file)
--- a/build.rs
+++ b/build.rs
@@ -430,7 +430,7 @@ fn build_c_code(
     out_dir: &Path,
     core_name_and_version: &str,
 ) {
-    let (asm_srcs, obj_srcs) = if let Some(asm_target) = asm_target {
+    let (mut asm_srcs, mut obj_srcs) = if let Some(asm_target) = asm_target {
         let perlasm_src_dsts = perlasm_src_dsts(generated_dir, asm_target);
 
         let asm_srcs = asm_srcs(perlasm_src_dsts);
@@ -450,6 +450,11 @@ fn build_c_code(
         (vec![], vec![])
     };
 
+    if target.arch == "arm" {
+        asm_srcs = vec![];
+        obj_srcs = vec![];
+    }
+
     let core_srcs = sources_for_arch(&target.arch)
         .into_iter()
         .filter(|p| !is_perlasm(p))
index fe40db77229cb1e2f883d83c2cb4e25321d3ed4e..d3db29a27ce31337ca7c15667deb2d03ce3aaf68 100644 (file)
@@ -31,9 +31,6 @@
 #elif defined(__AARCH64EL__) || defined(_M_ARM64)
 #define OPENSSL_64_BIT
 #define OPENSSL_AARCH64
-#elif defined(__ARMEL__) || defined(_M_ARM)
-#define OPENSSL_32_BIT
-#define OPENSSL_ARM
 // All of following architectures are only supported when `__BYTE_ORDER__` can be used to detect
 // endianness (in crypto/internal.h).
 #elif !defined(__BYTE_ORDER__)
 #error "Unsupported endianness"
 #elif defined(__LP64__)
 #define OPENSSL_64_BIT
-#elif defined(__ILP32__)
-#define OPENSSL_32_BIT
-// Versions of GCC before 10.0 didn't define `__ILP32__` for all 32-bit targets.
-#elif defined(__MIPSEL__) || defined(__MIPSEB__) || defined(__PPC__) || defined(__powerpc__) || defined(__csky__) || defined(__XTENSA__)
-#define OPENSSL_32_BIT
 #else
-#error "Unknown target CPU"
+#define OPENSSL_32_BIT
 #endif
 
 #if defined(__APPLE__)
@@ -79,9 +71,9 @@
 
 // Disable 32-bit Arm assembly on Apple platforms. The last iOS version that
 // supported 32-bit Arm was iOS 10.
-#if defined(OPENSSL_APPLE) && defined(OPENSSL_ARM)
+//#if defined(OPENSSL_APPLE) && defined(OPENSSL_ARM)
 #define OPENSSL_ASM_INCOMPATIBLE
-#endif
+//#endif
 
 #if defined(OPENSSL_ASM_INCOMPATIBLE)
 #undef OPENSSL_ASM_INCOMPATIBLE
index fae608ce5432b8f552729fecff2398db2bd54270..2ff430c9228954c2d625b3cf3c03c79447d37546 100644 (file)
@@ -54,7 +54,7 @@ pub(super) enum Key {
 
     #[cfg(any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         target_arch = "x86",
         target_arch = "x86_64"
     ))]
@@ -84,7 +84,7 @@ impl Key {
 
         #[cfg(any(
             all(target_arch = "aarch64", target_endian = "little"),
-            all(target_arch = "arm", target_endian = "little"),
+            all(target_arch = "armxxx", target_endian = "little"),
             target_arch = "x86_64",
             target_arch = "x86"
         ))]
@@ -109,7 +109,7 @@ impl Key {
 
             #[cfg(any(
                 all(target_arch = "aarch64", target_endian = "little"),
-                all(target_arch = "arm", target_endian = "little"),
+                all(target_arch = "armxxx", target_endian = "little"),
                 target_arch = "x86",
                 target_arch = "x86_64"
             ))]
index 2e418bbf106841aab4734145d87cd79eb8c01f2b..01a2ddce539ac067a4745d2c475116ddf90491d5 100644 (file)
@@ -12,7 +12,7 @@
 // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-#![cfg(all(target_arch = "arm", target_endian = "little"))]
+#![cfg(all(target_arch = "armxxx", target_endian = "little"))]
 
 use super::{Counter, Overlapping, AES_KEY};
 
index c2286e1b871644ba3a311626ccb34dfdee8c5380..729c05bde39cd137552ae2fd5f649734a053e3da 100644 (file)
@@ -60,7 +60,7 @@ impl AES_KEY {
     }
 }
 
-#[cfg(all(target_arch = "arm", target_endian = "little"))]
+#[cfg(all(target_arch = "armxxx", target_endian = "little"))]
 impl AES_KEY {
     pub(super) unsafe fn derive(
         f: for<'a> unsafe extern "C" fn(*mut AES_KEY, &'a AES_KEY),
index 283cd7d14b904e9d3d272d0c047612e0b7de4a24..4352d840a91171cd8b8dfa7a9ec9b97f929c9431 100644 (file)
@@ -14,7 +14,7 @@
 
 #![cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86",
     target_arch = "x86_64"
 ))]
@@ -24,7 +24,7 @@ use crate::{cpu, error};
 
 #[cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little")
+    all(target_arch = "armxxx", target_endian = "little")
 ))]
 type RequiredCpuFeatures = cpu::arm::Neon;
 
@@ -48,7 +48,7 @@ impl Key {
 
 #[cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86_64"
 ))]
 impl EncryptBlock for Key {
@@ -71,7 +71,7 @@ impl EncryptCtr32 for Key {
     }
 }
 
-#[cfg(all(target_arch = "arm", target_endian = "little"))]
+#[cfg(all(target_arch = "armxxx", target_endian = "little"))]
 impl EncryptCtr32 for Key {
     fn ctr32_encrypt_within(&self, in_out: Overlapping<'_>, ctr: &mut Counter) {
         use super::{super::overlapping::IndexError, bs, BLOCK_LEN};
index d9e08a3116c4beb2d06762b429e69878cbf58878..4d87f678b183918dc82c2bff29e6c15cd012328e 100644 (file)
@@ -27,7 +27,7 @@ use core::ops::RangeFrom;
 
 #[cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86",
     target_arch = "x86_64"
 ))]
@@ -66,7 +66,7 @@ enum DynKey {
 
     #[cfg(any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little")
+        all(target_arch = "armxxx", target_endian = "little")
     ))]
     Simd(Combo<aes::vp::Key, gcm::neon::Key>),
 
@@ -112,7 +112,7 @@ impl DynKey {
 
         #[cfg(any(
             all(target_arch = "aarch64", target_endian = "little"),
-            all(target_arch = "arm", target_endian = "little")
+            all(target_arch = "armxxx", target_endian = "little")
         ))]
         if let Some(cpu) = cpu.get_feature() {
             return Self::new_neon(key, cpu);
@@ -129,7 +129,7 @@ impl DynKey {
 
     #[cfg(any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little")
+        all(target_arch = "armxxx", target_endian = "little")
     ))]
     #[cfg_attr(target_arch = "aarch64", inline(never))]
     fn new_neon(key: aes::KeyBytes, cpu: cpu::arm::Neon) -> Result<Self, error::Unspecified> {
@@ -154,7 +154,7 @@ impl DynKey {
     #[cfg_attr(
         any(
             all(target_arch = "aarch64", target_endian = "little"),
-            all(target_arch = "arm", target_endian = "little"),
+            all(target_arch = "armxxx", target_endian = "little"),
             target_arch = "x86",
             target_arch = "x86_64",
         ),
@@ -210,7 +210,7 @@ pub(super) fn seal(
 
         #[cfg(any(
             all(target_arch = "aarch64", target_endian = "little"),
-            all(target_arch = "arm", target_endian = "little"),
+            all(target_arch = "armxxx", target_endian = "little"),
             target_arch = "x86_64",
             target_arch = "x86"
         ))]
@@ -243,7 +243,7 @@ fn seal_whole_partial<A: aes::EncryptBlock, G: gcm::UpdateBlock>(
 #[cfg_attr(
     any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         target_arch = "x86",
         target_arch = "x86_64"
     ),
@@ -338,7 +338,7 @@ pub(super) fn open(
 
         #[cfg(any(
             all(target_arch = "aarch64", target_endian = "little"),
-            all(target_arch = "arm", target_endian = "little"),
+            all(target_arch = "armxxx", target_endian = "little"),
             target_arch = "x86_64",
             target_arch = "x86"
         ))]
@@ -386,7 +386,7 @@ fn open_whole_partial<A: aes::EncryptBlock, G: gcm::UpdateBlock>(
         all(
             any(
                 all(target_arch = "aarch64", target_endian = "little"),
-                all(target_arch = "arm", target_endian = "little")
+                all(target_arch = "armxxx", target_endian = "little")
             ),
             target_feature = "neon"
         ),
index 0b228cef5101972b8d80e21a821c8c5b2ba55c7f..e382a0b66dd35080b173e2b5d10adbb4e298aff5 100644 (file)
@@ -20,7 +20,7 @@ use cfg_if::cfg_if;
 cfg_if! {
     if #[cfg(any(
                 all(target_arch = "aarch64", target_endian = "little"),
-                all(target_arch = "arm", target_endian = "little"),
+                all(target_arch = "armxxx", target_endian = "little"),
                 target_arch = "x86",
                 target_arch = "x86_64"
             ))] {
@@ -97,7 +97,7 @@ impl Key {
                         unsafe { (1, (), Overlapping<'_>) => ChaCha20_ctr32_nohw },
                         self, counter, in_out, ())
                 }
-            } else if #[cfg(all(target_arch = "arm", target_endian = "little"))] {
+            } else if #[cfg(all(target_arch = "armxxx", target_endian = "little"))] {
                 use cpu::{GetFeature as _, arm::Neon};
                 const NEON_MIN_LEN: usize = 192 + 1;
                 if in_out.len() >= NEON_MIN_LEN {
@@ -183,7 +183,7 @@ impl Counter {
         test,
         not(any(
             all(target_arch = "aarch64", target_endian = "little"),
-            all(target_arch = "arm", target_endian = "little"),
+            all(target_arch = "armxxx", target_endian = "little"),
             target_arch = "x86_64"
         ))
     ))]
@@ -218,7 +218,7 @@ mod tests {
         // Always use `MAX_OFFSET` if we hav assembly code.
         let max_offset = if cfg!(any(
             all(target_arch = "aarch64", target_endian = "little"),
-            all(target_arch = "arm", target_endian = "little"),
+            all(target_arch = "armxxx", target_endian = "little"),
             target_arch = "x86",
             target_arch = "x86_64"
         )) {
index c655a0dd39b2e242a9536abdc6884d3b1e4938b3..922b767c9c03bb75d5cc41e6dfd7b25b6f3057b5 100644 (file)
@@ -23,7 +23,7 @@ pub(super) const ZERO_BLOCK: Block = [0u8; BLOCK_LEN];
 
 #[cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86",
     target_arch = "x86_64"
 ))]
@@ -42,7 +42,7 @@ macro_rules! htable_new {
 ///    `ghash()`.
 #[cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86",
     target_arch = "x86_64"
 ))]
@@ -79,7 +79,7 @@ impl KeyValue {
 ///   * `f` may inspect CPU features.
 #[cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86",
     target_arch = "x86_64"
 ))]
@@ -97,7 +97,7 @@ impl HTable {
 
     #[cfg(any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little")
+        all(target_arch = "armxxx", target_endian = "little")
     ))]
     pub(super) unsafe fn gmult(
         &self,
index 814cd521879998ba57c984fc543f63d58e1ab619..e6084b31856c606dcf5b741430fdf23986c6e8f2 100644 (file)
@@ -14,7 +14,7 @@
 
 #![cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little")
+    all(target_arch = "armxxx", target_endian = "little")
 ))]
 
 use super::{HTable, KeyValue, UpdateBlock, UpdateBlocks, Xi, BLOCK_LEN};
index 69235872231aac72e3965a70b3f08eddf43ea647..0fbc7c701bcaa8be073ad1aeb1d0d37ca473d085 100644 (file)
@@ -38,7 +38,7 @@ impl<'o, T> Overlapping<'o, T> {
     }
 
     #[cfg(any(
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         target_arch = "x86"
     ))]
     pub fn copy_within(self) -> &'o mut [T]
@@ -55,7 +55,7 @@ impl<'o, T> Overlapping<'o, T> {
     }
 
     #[cfg(any(
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         target_arch = "x86"
     ))]
     pub fn into_slice_src_mut(self) -> (&'o mut [T], RangeFrom<usize>) {
index d8c1578da388d5d1a3ed2d94b5acd1a7cc101d38..aa9905abe4b75d8f8648803de882765684ffa02d 100644 (file)
@@ -15,7 +15,7 @@
 // TODO: enforce maximum input length.
 
 use super::{Tag, TAG_LEN};
-#[cfg(all(target_arch = "arm", target_endian = "little"))]
+#[cfg(all(target_arch = "armxxx", target_endian = "little"))]
 use crate::cpu::GetFeature as _;
 use crate::{cpu, polyfill::slice::AsChunks};
 
@@ -38,7 +38,7 @@ impl Key {
 }
 
 pub(super) enum Context {
-    #[cfg(all(target_arch = "arm", target_endian = "little"))]
+    #[cfg(all(target_arch = "armxxx", target_endian = "little"))]
     ArmNeon(ffi_arm_neon::State),
     Fallback(ffi_fallback::State),
 }
@@ -46,7 +46,7 @@ pub(super) enum Context {
 impl Context {
     #[inline]
     pub(super) fn from_key(key: Key, cpu: cpu::Features) -> Self {
-        #[cfg(all(target_arch = "arm", target_endian = "little"))]
+        #[cfg(all(target_arch = "armxxx", target_endian = "little"))]
         if let Some(cpu) = cpu.get_feature() {
             return ffi_arm_neon::State::new_context(key, cpu);
         }
@@ -64,7 +64,7 @@ impl Context {
 
     fn update_internal(&mut self, input: &[u8]) {
         match self {
-            #[cfg(all(target_arch = "arm", target_endian = "little"))]
+            #[cfg(all(target_arch = "armxxx", target_endian = "little"))]
             Self::ArmNeon(state) => state.update_internal(input),
             Self::Fallback(state) => state.update_internal(input),
         }
@@ -73,7 +73,7 @@ impl Context {
     pub(super) fn finish(mut self, input: &[u8]) -> Tag {
         self.update_internal(input);
         match self {
-            #[cfg(all(target_arch = "arm", target_endian = "little"))]
+            #[cfg(all(target_arch = "armxxx", target_endian = "little"))]
             Self::ArmNeon(state) => state.finish(),
             Self::Fallback(state) => state.finish(),
         }
index 5c1542d191ecf691620a4c264ce7c23b03a0e3d3..68670bb976f64e5a838009df8236893e2ca4c059 100644 (file)
@@ -13,7 +13,7 @@
 // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-#![cfg(all(target_arch = "arm", target_endian = "little"))]
+#![cfg(all(target_arch = "armxxx", target_endian = "little"))]
 
 use super::{Key, Tag, KEY_LEN, TAG_LEN};
 use crate::{c, cpu::arm::Neon};
index 4098eced31b1dd293023143275c421f96dfc7789..5c8ada6c1662dfd79aa6772cd55cf47de4dba6a2 100644 (file)
@@ -136,7 +136,7 @@ pub(super) fn limbs_mul_mont(
                     (MIN_LIMBS, MOD_FALLBACK, ()) => bn_mul_mont_nohw
                 })
             }
-        } else if #[cfg(all(target_arch = "arm", target_endian = "little"))] {
+        } else if #[cfg(all(target_arch = "armxxx", target_endian = "little"))] {
             const MIN_8X: usize = 8;
             const MOD_8X: usize = 8;
             if n.len() >= MIN_8X && n.len() % MOD_8X == 0 {
@@ -192,7 +192,7 @@ pub(super) fn limbs_mul_mont(
 cfg_if! {
     if  #[cfg(not(any(
             all(target_arch = "aarch64", target_endian = "little"),
-            all(target_arch = "arm", target_endian = "little"),
+            all(target_arch = "armxxx", target_endian = "little"),
             target_arch = "x86_64")))] {
 
         // TODO: Stop calling this from C and un-export it.
@@ -250,7 +250,7 @@ cfg_if! {
     feature = "alloc",
     not(any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         target_arch = "x86_64"
     ))
 ))]
@@ -282,7 +282,7 @@ pub(super) fn limbs_from_mont_in_place(r: &mut [Limb], tmp: &mut [Limb], m: &[Li
 
 #[cfg(not(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86_64"
 )))]
 fn limbs_mul(r: &mut [Limb], a: &[Limb], b: &[Limb]) {
@@ -302,7 +302,7 @@ fn limbs_mul(r: &mut [Limb], a: &[Limb], b: &[Limb]) {
     test,
     not(any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         target_arch = "x86_64",
     ))
 ))]
index 293e1b53554356851f2bf73e613faef420daa238..05b089854560b7fcd8d8bf0c1fa9caae80a32e52 100644 (file)
@@ -63,7 +63,7 @@ macro_rules! impl_get_feature {
             IntelCpu,
 
             #[cfg(any(all(target_arch = "aarch64", target_endian = "little"),
-                     all(target_arch = "arm", target_endian = "little"),
+                     all(target_arch = "armxxx", target_endian = "little"),
                      target_arch = "x86", target_arch = "x86_64"))]
             // Synthesized to ensure the dynamic flag set is always non-zero.
             //
@@ -147,7 +147,7 @@ mod features {
     }
 
     cfg_if::cfg_if! {
-        if #[cfg(any(all(target_arch = "aarch64", target_endian = "little"), all(target_arch = "arm", target_endian = "little"),
+        if #[cfg(any(all(target_arch = "aarch64", target_endian = "little"), all(target_arch = "armxxx", target_endian = "little"),
                      target_arch = "x86", target_arch = "x86_64"))] {
             impl Features {
                 // SAFETY: This must only be called after CPU features have been written
@@ -186,7 +186,7 @@ mod features {
 const _: () = assert!(size_of::<Features>() == 0);
 
 cfg_if::cfg_if! {
-    if #[cfg(any(all(target_arch = "aarch64", target_endian = "little"), all(target_arch = "arm", target_endian = "little")))] {
+    if #[cfg(any(all(target_arch = "aarch64", target_endian = "little"), all(target_arch = "armxxx", target_endian = "little")))] {
         pub mod arm;
         use arm::featureflags;
     } else if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] {
index 8da973a1a331bf33a9d6c2e273d1bb7fc9749d0f..92ffbbfa04803c3e9e18cb1413b9c001bba005da 100644 (file)
@@ -23,7 +23,7 @@ mod abi_assumptions {
     // (`N0`, `Limb`, `LimbMask`, `crypto_word_t` etc.).
     #[cfg(target_arch = "aarch64")]
     const _ASSUMED_POINTER_SIZE: usize = 8;
-    #[cfg(target_arch = "arm")]
+    #[cfg(target_arch = "armxxx")]
     const _ASSUMED_POINTER_SIZE: usize = 4;
     const _ASSUMED_USIZE_SIZE: () = assert!(size_of::<usize>() == _ASSUMED_POINTER_SIZE);
     const _ASSUMED_REF_SIZE: () = assert!(size_of::<&'static u8>() == _ASSUMED_POINTER_SIZE);
@@ -95,7 +95,7 @@ pub(super) mod featureflags {
         polyfill::{once_cell::race, usize_from_u32},
     };
     use core::num::NonZeroUsize;
-    #[cfg(all(target_arch = "arm", target_endian = "little"))]
+    #[cfg(all(target_arch = "armxxx", target_endian = "little"))]
     use core::sync::atomic::{AtomicU32, Ordering};
 
     pub(in super::super) fn get_or_init() -> cpu::Features {
@@ -114,7 +114,7 @@ pub(super) mod featureflags {
             let merged = CAPS_STATIC | detected;
 
             #[cfg(all(
-                target_arch = "arm",
+                target_arch = "armxxx",
                 target_endian = "little",
                 target_has_atomic = "32"
             ))]
@@ -181,7 +181,7 @@ pub(super) mod featureflags {
         ;
 
     // TODO(MSRV): 32-bit ARM doesn't support any static feature detection yet.
-    #[cfg(all(target_arch = "arm", target_endian = "little"))]
+    #[cfg(all(target_arch = "armxxx", target_endian = "little"))]
     pub(in super::super) const STATIC_DETECTED: u32 = 0;
 }
 
index db9549c7b96b2b44ea3f6c7906be59828ba90965..6ae6c445ced85b01f806043b9d9500acb028d169 100644 (file)
@@ -75,7 +75,7 @@ pub fn detect_features() -> u32 {
 
 #[cfg(all(
     not(target_env = "uclibc"),
-    all(target_arch = "arm", target_endian = "little")
+    all(target_arch = "armxxx", target_endian = "little")
 ))]
 pub fn detect_features() -> u32 {
     use super::CAPS_STATIC;
index 556f57db516b267b155a5dc12afc57289212aad1..34afd817c3cab23eb7a803727dd2953c8636ad67 100644 (file)
@@ -22,7 +22,7 @@ use core::{
 #[cfg_attr(
     any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         target_arch = "x86_64"
     ),
     allow(dead_code)
index 78ca27b6dab14f158fd373e235dc4faf53b134be..e4dc4faaa2912e3002674955d69273922d250e13 100644 (file)
@@ -23,7 +23,7 @@ pub(super) const CHAINING_WORDS: usize = 8;
 
 #[cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86_64"
 ))]
 #[macro_use]
index 4f762d1587ae576e2c459031368f4c3552e41a15..12ef87c9b608bf59cc4393877b2f4ccd47a62a98 100644 (file)
@@ -34,7 +34,7 @@ pub(crate) fn block_data_order_32(
             } else {
                 sha2_32_ffi!(unsafe { () => sha256_block_data_order_nohw }, state, data, ())
             }
-        } else if #[cfg(all(target_arch = "arm", target_endian = "little"))] {
+        } else if #[cfg(all(target_arch = "armxxx", target_endian = "little"))] {
             use cpu::{GetFeature as _, arm::Neon};
             if let Some(cpu) = cpu.get_feature() {
                 sha2_32_ffi!(unsafe { Neon => sha256_block_data_order_neon }, state, data, cpu)
index 63c254e1d9823b4f148ce42ca44d13e831aa620c..6af8d1e04ecd18f665edea87d9f29df406f9b32f 100644 (file)
@@ -34,7 +34,7 @@ pub(crate) fn block_data_order_64(
             } else {
                 sha2_64_ffi!(unsafe { () => sha512_block_data_order_nohw }, state, data, ())
             }
-        } else if #[cfg(all(target_arch = "arm", target_endian = "little"))] {
+        } else if #[cfg(all(target_arch = "armxxx", target_endian = "little"))] {
             use cpu::{GetFeature as _, arm::Neon};
             if let Some(cpu) = cpu.get_feature() {
                 sha2_64_ffi!(unsafe { Neon => sha512_block_data_order_neon }, state, data, cpu)
index 216648a5bd06695bb39b50989957f9ab0fefd164..b0f1a0c1def74596851e239a51d6cca2f6f2a5f6 100644 (file)
@@ -68,7 +68,7 @@ fn x25519_public_from_private(
     let private_key = ops::MaskedScalar::from_bytes_masked(*private_key);
 
     #[cfg(all(
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         any(target_os = "android", target_os = "linux")
     ))]
     if let Some(cpu) = <cpu::Features as cpu::GetFeature<_>>::get_feature(&cpu_features) {
@@ -115,7 +115,7 @@ fn x25519_ecdh(
         #[allow(unused_variables)] cpu_features: cpu::Features,
     ) {
         #[cfg(all(
-            all(target_arch = "arm", target_endian = "little"),
+            all(target_arch = "armxxx", target_endian = "little"),
             any(target_os = "android", target_os = "linux")
         ))]
         if let Some(cpu) = <cpu::Features as cpu::GetFeature<_>>::get_feature(&cpu_features) {
@@ -166,7 +166,7 @@ fn x25519_ecdh(
 
 // BoringSSL uses `!defined(OPENSSL_APPLE)`.
 #[cfg(all(
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     any(target_os = "android", target_os = "linux")
 ))]
 fn x25519_neon(
index 726b6b0361be7aa192624e6e61abb065297b3a93..3069568ca4b581c5f3ffe1461ced9cdcc74c5255 100644 (file)
@@ -82,7 +82,7 @@
 #![cfg_attr(
     not(any(
         all(target_arch = "aarch64", target_endian = "little"),
-        all(target_arch = "arm", target_endian = "little"),
+        all(target_arch = "armxxx", target_endian = "little"),
         target_arch = "x86",
         target_arch = "x86_64",
         feature = "alloc"
index cf513208aa89d0281d27c58d8275998ba89f2ce8..ec50aedb61f3ca05102bd6158557367c8eae498d 100644 (file)
@@ -63,7 +63,7 @@ mod leading_zeros_skipped;
 
 #[cfg(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86",
     target_arch = "x86_64"
 ))]
index bfe5ab5709a646a7343ce18fa5543468977d91c9..2c6913d2354caca669d77b19b559a4384c168f0d 100644 (file)
@@ -37,7 +37,7 @@ impl<'a, T, const N: usize> AsChunks<'a, T, N> {
         self.0
     }
 
-    #[cfg(any(target_arch = "aarch64", target_arch = "arm", target_arch = "x86_64"))]
+    #[cfg(any(target_arch = "aarch64", target_arch = "armxxx", target_arch = "x86_64"))]
     #[inline(always)]
     pub fn as_ptr(&self) -> *const [T; N] {
         self.0.as_ptr().cast()
index 39f3f9fa06e87452a6eea0d63c64b0d1126e3a6b..f1b2bf89a0c0e422dd83ea4510383915c2d8a66e 100644 (file)
@@ -84,7 +84,7 @@ macro_rules! prefixed_extern {
 #[deprecated = "`#[export_name]` creates problems and we will stop doing it."]
 #[cfg(not(any(
     all(target_arch = "aarch64", target_endian = "little"),
-    all(target_arch = "arm", target_endian = "little"),
+    all(target_arch = "armxxx", target_endian = "little"),
     target_arch = "x86",
     target_arch = "x86_64"
 )))]